package com.logistics.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 登录响应 VO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponse {
    
    /**
     * JWT Token
     */
    private String token;
    
    /**
     * 用户信息
     */
    private UserInfo userInfo;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class UserInfo {
        private Long id;
        private Long tenantId;
        private Long siteId;  // 站点ID
        private String username;
        private String realName;
        private String phone;
        private String role;
        private Integer status;
        private java.util.List<String> permissions;  // 用户权限代码列表（旧版兼容）
        
        // 新增：基于角色类型的权限系统
        private java.util.List<RoleInfo> roles;  // 用户角色列表
        private java.util.List<String> authorityCodes;  // 用户自定义权限码
        private java.util.List<String> moduleResourceCodes;  // 已开通的模块资源编码
    }
    
    /**
     * 角色信息
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class RoleInfo {
        private Long roleId;
        private String roleCode;
        private Integer roleType;  // 角色类型：1-平台管理员, 11-租户超管, 21-站点管理员, 31-普通操作员
        private Integer fixedPermission;  // 是否固定权限：1-固定，0-可编辑
    }
}

